package com.caozf.singleton.serialize;

import java.io.Serializable;

/**
 * 创建时间：2019/9/12 20:26
 * 创建人:曹子方
 */
public class LazySingleton implements Serializable {
    private  static LazySingleton lazySingleton=null;

    private LazySingleton(){
        if(lazySingleton!=null){//在单例实例lazySingleton初始化之前，不能防止反射的方式调用构造函数。暂时还未想到更好的解决方式
            throw  new RuntimeException("不允许创建多个实例，请使用getInstance获得实例");
        }
    }

    public static LazySingleton getInstance(){
        if(lazySingleton==null){
            synchronized (LazySingleton.class){
                if(lazySingleton==null){
                    lazySingleton=new LazySingleton();
                }
            }
        }
        return lazySingleton;
    }
    public Object readResolve(){
        return  getInstance();
    }
}
